Qanopee: a Medical Appointment Platform
The project consisted of developing and designing an online booking platform called Qanopee, specialized in medical appointments connected to companies. Qanopee won the French Tech Impact Award, and its mission is to improve quality of life at work by reducing the risks of accidents, occupational diseases, and absenteeism. The practitioners present on the platform belong to scientifically validated and state-recognized professions, and each profile is verified by a person before being put online.
This project began in June 2023, until September 2024. The main challenge was the migration of the platform from the no-code Bubble solution to a code-based solution. Given that the MVP (Minimum Viable Product) had already been commercialized, it was imperative to migrate the data while building the new platform in an extremely short timeframe.
The team involved in this project included the CEO of Qanopee, a developer from an IT services company (SSII), as well as two occasional freelancers.
Tasks & Objectives
In this project, my role was to architect the technical solution, supervise the developer, prioritize developments, thus playing the role of CTO (Chief Technology Officer) and lead developer for the startup. The objective was to produce the new platform in less than 4 months.
The success criteria were to replace the Bubble application with our new code-based solution, while integrating essential functionalities such as the payment module via Stripe, Google Calendar synchronization, and the CMS (Content Management System) aspect at launch.
Actions and Development
My main actions included building a monorepo for the entire project, developing the frontend for individuals on desktop, setting up the foundations of the frontend for practitioners (synchronization of events in the calendar), as well as developing and setting up the backend with Supabase (models and edge functions). I also managed project supervision and development strategy.
The migration process was broken down into several steps: migration of data from Bubble to PostgreSQL / Supabase via ETL (Extract-Transform-Load), development of the frontend for individuals, drawing inspiration from the market leader to optimize TTM (Time To Market), and setting up the frontend for individuals, at a time when another developer was brought on board, accompanied occasionally by a freelancer.
In parallel, I modeled and built the backend. Once the two developers were fully integrated, I focused on the backend to limit cognitive overload.
I actively worked with the IT services company (ESN) developer to validate his MR (Merge Requests) and monitor his technical choices. I also collaborated with three freelancers specialized respectively in Bubble migration, frontend and Stripe, and setting up a backend in NestJS (Node.js framework), more common and suitable for scalable architectures than Supabase edge functions.
The main challenges were constant pressure and extremely tight deadlines, as well as high expectations with limited resources. From a technical point of view, the challenges included setting up a complex project via a monorepo orchestrated with NX, configuring deployments in Vercel and Supabase, setting up payment flows via Stripe, and synchronization with Google Calendar. I also managed DevOps tasks (automatic deployment with CI/CD and SSL) on Digital Ocean, while being a buffer between developers and the CTO's strategic vision. Finally, my concentration turned to supervision and review, with satellite tasks like DevOps or Stripe debugging.
All decisions were made based on minimizing TTM. This influenced the simplicity of the technical stack. Practices such as testing were not implemented from the start to avoid any unnecessary complexity. The choice of Supabase proved crucial, as it offers a standard PostgreSQL database and manages features such as authentication, security, and large file management. In addition, its flexibility and open-source nature allow for future migration to our own servers if necessary. The Quasar Dev framework based on Vue 3 was also chosen for its simplicity, allowing rapid development of frontend interfaces.
Results
Four months after the start of the project, the platform was online, with functionalities allowing practitioners to obtain SaaS (Software as a Service) subscriptions, individuals to book slots for video consultations, and to pay online. More than 200 practitioners currently use the platform.
This experience was extremely enriching, both technically and humanly. I was able to carry out a complete large-scale project, including the integration of third-party services such as Stripe and Google Calendar. I also supervised, trained, then directed another developer, while coordinating the development efforts of a team. Finally, I acquired valuable experience in the functioning of a young startup.
Technical Stack
The project relies on the following tools and technologies:
- Languages : TypeScript/JavaScript, SQL
- Frameworks : Quasar Dev, Vue 3, Supabase, PostgreSQL, Deno, NestJS
- Third-party APIs : Brevo (email and SMS management), Stripe (payment), Google (Calendar and Places)
- Hosting : Supabase, Vercel, Digital Ocean
It is important to note that this technical stack was chosen to minimize TTM. The major technical challenges encountered include:
- Setting up Stripe processes, taking into account as much as possible the edge cases
- Synchronization with Google Calendar via edge functions
- Lack of tests which inevitably led to regressions in the code, sometimes discovered late